package com.dhj.yygh.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dhj.yygh.model.user.UserInfo;
import com.dhj.yygh.vo.user.LoginVo;
import com.dhj.yygh.vo.user.UserAuthVo;
import com.dhj.yygh.vo.user.UserInfoQueryVo;

import java.util.Map;

public interface UserInfoService extends IService<UserInfo> {
    /**
     * 用户登录接口
     *
     * @param loginVo 登录的 vo 对象
     * @return 返回用户信息
     */
    Map<String, Object> loginUser(LoginVo loginVo);

    /**
     * 根据 openid 查询用户
     *
     * @param openid openid
     * @return 返回用户对象
     */
    UserInfo getUserInfoByOpenId(String openid);

    /**
     * 认证用户信息
     *
     * @param userAuthVo 用户 vo 对象
     * @param userId     用户 id
     */
    void userAuth(UserAuthVo userAuthVo, Long userId);


    /**
     * 用户列表条件分页条件查询
     *
     * @param infoPage        分页对象
     * @param userInfoQueryVo 用户 vo 对象
     * @return 返回用户分页后对象
     */
    Page<UserInfo> getUserList(Page<UserInfo> infoPage, UserInfoQueryVo userInfoQueryVo);

    /**
     * 根据用户 id 修改用户状态
     *
     * @param id     用户 id
     * @param status 用户状态
     * @return 返回是否修改成功
     */
    boolean lockUser(Long id, Integer status);

    /**
     * 根据用户 id 查询用户详情信息
     *
     * @param id 用户 id
     * @return 返回 Map 结果集合
     */
    Map<String, Object> userInfoDetail(Long id);

    /**
     * 认证审批用户信息
     *
     * @param id          用户 id
     * @param auth_status 用户认证状态码
     */
    void authUserInfo(Long id, Integer auth_status);

}
